#  --------------------------------------------------------------------------------
"""
首页，详情页面

我们都是先查询数据库的数据
然后再进行HTML页面的渲染

不管是  数据库的数据缓存  还是 HTML页面的渲染(特别是分类渲染，比较慢)    多少会影响

最好的体验 是  用户  直接  就可以访问到   经过数据库查询，已经渲染的HTML页面   (静态化)

经过数据库查询，已经渲染的HTML页面，写入到指定目录

"""
import os
import time

from apps.contents.models import ContentCategory
from meiduo_mall.settings import BASE_DIR
from utils.goods import get_categories


# 这个函数  能够帮助我们  数据库查询，渲染HTML页面，然后把渲染后的HTML写入到指定的文件
def generate_mei_index():
    print(f'-----------------{time.ctime()}-------------------')
    categories = get_categories()

    # 广告数据
    contents = {}
    content_categories = ContentCategory.objects.all()
    for cat in content_categories:
        contents[cat.key] = cat.content_set.filter(status=True).order_by('sequence')

    # 渲染模板的上下文
    context = {
        'categories': categories,
        'contents': contents,
    }

    # 1. 加载渲染的模板
    from django.template import loader
    index_template = loader.get_template('index.html')

    # 把数据给模板
    index_html_data = index_template.render(context)
    # 把渲染后的HTML写入到指定的文件
    # base_dir 的上一级
    file_path = os.path.join(os.path.dirname(BASE_DIR), 'front_end_pc', 'index.html')

    with open(file_path, 'w', encoding='utf-8') as f:
        f.write(index_html_data)

